[Coding005] DataStructure

顺序表的创建与销毁(4种实现方式)

Ben 2023/07/27

More coding records

Get the knowledge flowing and circulating! :)

目录

标题:顺序表的创建与销毁(C语言版)

在数据结构的学习中,最先遇到的就是顺序表!so, 什么是顺序表?

顺序表 (SqList, Sequence List),即顺序线性表。

顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构,使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。

这里需要注意的是,顺序表的缩写,一般写为SqList. 当然也可以缩写成其他的,本系列程序,我就都写成SqList啦~

Demo学习

主架构代码

解读:这里的代码不能直接运行,因为其中的主要实现没有写出来。

  • // 【A段代码: 创建顺序表】

    // 【B段代码: 创建顺序表】

    // 【C段代码: 创建顺序表】

    // 【D段代码: 创建顺序表】


为了防止大家看到之后,因为代码过长而退缩,下面我把A段代码提取出来,单独写一下!分为4个程序。

  1. 利用【A段代码】并测试;

  2. 利用【B段代码】并测试;

  3. 利用【C段代码】并测试;

  4. 利用【D段代码】并测试;

 

可完整运行的样例程序A|B|C|D

[A段代码]:创建顺序表并测试

运行结果

代码解读

  • A段代码,SqList* Init_SqList01(), 有返回值,且返回的为指针。所以直接调用的时候,用的是箭头符号->,建议大家直接这样记:指针类型用箭头


[B段代码]:创建顺序表并测试

运行结果

代码解读

  • B段代码,SqList Init_SqList02(), 有返回值,且返回的不是指针。所以直接调用的时候,用的是.


[C段代码]:创建顺序表并测试

运行结果

代码解读

  • C段代码,void Init_SqList03(SqList *L), 没有返回值,需要传入参数,且传入的是一个地址。用该函数处理完后,即可直接使用传入的变量。


[C段代码]:version2.0 | 创建顺序表并测试

运行结果

 


[D段代码]:创建顺序表并测试

运行结果

代码解读

  • D段代码,void Init_SqList04(SqList *L), 没有返回值,需要传入参数,与C段代码不同在于,实现的时候,绕了个弯(由L->elem变为了(*L).elem)。

 

整体对比

  • A段代码,SqList* Init_SqList01(), 有返回值,且返回的为指针。所以直接调用的时候,用的是箭头符号->,建议大家直接这样记:指针类型用箭头

  • B段代码,SqList Init_SqList02(), 有返回值,且返回的不是指针。所以直接调用的时候,用的是.

  • C段代码,void Init_SqList03(SqList *L), 没有返回值,需要传入参数,且传入的是一个地址。用该函数处理完后,即可直接使用传入的变量。

  • D段代码,void Init_SqList04(SqList *L), 没有返回值,需要传入参数,与C段代码不同在于,实现的时候,绕了个弯(由L->elem变为了(*L).elem)。


销毁函数,void DestroyList(SqList *L), malloc对应的是free,传入参数:待销毁顺序表的指针,其他操作表示还原初始状态。

 

So, 你觉得哪种方式实现起来比较ok? 以后就选那种就行啦!